repository design pattern interview questions